home *** CD-ROM | disk | FTP | other *** search
- // GETINFO SCRIPTING
- // Yahoo!Cinema
-
- (**************************************************
- * Movie importation script for: *
- * Yahoo!Cinema (IT), http://it.movies.yahoo.com *
- * *
- * (c) 2004 Stefano Mora stefano.mora@libero.it *
- * (c) 2003 Andrea Cristaudo achris@tiscalinet.it *
- * *
- * For use with Ant Movie Catalog 3.4.1 *
- * www.antp.be/software/moviecatalog *
- * *
- * This program is free software; you can *
- * redistribute it and/or modify it under the *
- * terms of the GNU General Public License as *
- * published by the Free Software Foundation; *
- * either version 2 of the License, or (at your *
- * option) any later version. *
- **************************************************)
-
- program YahooCinema;
- var
- MovieName: string;
- TheMovieAddress: string;
-
- const
- PATHLOG = 'c:\Programmi\Ant Movie Catalog\Log\LogYahoo\';
-
- // ---
-
- function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
- var
- i: Integer;
- begin
- result := -1;
- if StartAt < 0 then
- StartAt := 0;
- for i := StartAt to List.Count-1 do
- if Pos(Pattern, List.GetString(i)) <> 0 then
- begin
- result := i;
- Break;
- end;
- end;
-
- // ---
-
- procedure AnalyzePage(Address: string);
- var
- Page: TStringList;
- LineNr: integer;
- BeginPos: integer;
-
- begin
- Page := TStringList.Create;
-
- Page.Text := GetPage(Address);
- //Page.LoadFromFile('c:\Programmi\Ant Movie Catalog\LogYahoo\il quinto elemento.film'); // Debug
- //Page.SavetoFile(PATHLOG+MovieName+'.res');
-
- LineNr := FindLine('Non abbiamo trovato nessun risultato', Page, 0);
- if LineNr<>-1 then
- begin
- ShowMessage('Film non trovato');
- exit;
- end;
-
-
- LineNr := FindLine('<font face=arial,helvetica size=+1><b>Risultati ricerca</b></font>', Page, 0);
- if LineNr = -1 then
- begin // Trovato il film
- SetField(fieldURL, Address);
- AnalyzeMoviePage(Page);
-
- //Debug
- //Page.SaveToFile('c:\Programmi\Ant Movie Catalog\LogYahoo\'+MovieName+'.film');
- end
- else
- begin // Crea una lista di risultati
- PickTreeClear;
- AddMoviesTitles(Page);
- if TheMovieAddress='' then
- begin
- if PickTreeExec(Address) then
- begin
- SetField(fieldURL, Address);
- Page.Text := GetPage(Address);
-
- //Debug
- // Page.SaveToFile('c:\Programmi\Ant Movie Catalog\LogYahoo\'+MovieName+'.film2');
-
- AnalyzeMoviePage(Page);
- end;
- end
- else
- begin
- SetField(fieldURL, TheMovieAddress);
- Page.Text := GetPage(TheMovieAddress);
- AnalyzeMoviePage(Page);
- //Debug
- // Page.SaveToFile('c:\Programmi\Ant Movie Catalog\LogYahoo\'+MovieName+'.film3');
- end;
- end;
- Page.Free;
- end;
-
- // ---
-
- procedure AnalyzeMoviePage(Page: TStringList);
- var
- Fine: Integer;
- Line: string;
- LineNr: Integer;
- BeginPos, EndPos: Integer;
- Field: integer;
- strTmp: string;
-
- begin
- Fine := 0;
-
- // Cerca il tag che identifica il titolo del film
- LineNr := FindLine('<td><font face=arial size=+1 color="#333366"><b>', Page, 0);
- if LineNr > -1 then
- begin
- //Translated Title + Year
- Line := Page.GetString(LineNr);
- HTMLRemoveTags(Line);
-
- strTmp := copy(Line, 1, pos(' (', Line));
- SetField(fieldTranslatedTitle, strTmp);
- SetField(fieldOriginalTitle, strTmp);
- // Setta lo stesso titolo: se l'originale sarα diverso, lo modificherα poi
-
- // Ricava l'anno tra le parentesi
- Delete(Line, 1, pos(' (', Line) + 1);
- Delete(Line, pos(')', Line), pos(')', Line) + 1);
- SetField(fieldYear, Line);
-
- // Cerca il genere
- LineNr := FindLine('Genere:', Page, LineNr);
- if LineNr <> -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos('</b>', Line)+4;
- EndPos := pos('<br>', Line);
- SetField(fieldCategory, copy(Line, BeginPos, EndPos-BeginPos));
- end
-
- // Durata + origine
- LineNr := FindLine('Durata', Page, LineNr);
- if LineNr <> -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos('</b>', Line)+4;
- EndPos := pos('<b> -', Line);
- strTmp := copy(Line, BeginPos, EndPos-BeginPos);
- SetField(fieldLength, strTmp);
-
- BeginPos := pos('ne: </b>', Line)+8;
- EndPos := pos('<p>', Line);
- SetField(fieldCountry, copy(Line, BeginPos, EndPos-BeginPos));
- end
-
- // Descrizione
- LineNr := FindLine('</table>', Page, LineNr);
- Line := Page.GetString(LineNr+2);
- // ShowMessage(Line);
- SetField(fieldDescription, Line);
-
- // Titolo originale
- LineNr := FindLine('Titolo Originale:', Page, LineNr);
- if LineNr <> -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos('</b>', Line)+4;
- EndPos := pos('<br>', Line);
- SetField(fieldOriginalTitle, copy(Line, BeginPos, EndPos-BeginPos));
- end
-
- // Regia
- LineNr := FindLine('Regia:', Page, LineNr);
- if LineNr <> -1 then
- begin
- Line := Page.GetString(LineNr+1);
- HTMLRemoveTags(Line);
- SetField(fieldDirector, Line);
- end
-
- // Attori
- LineNr := FindLine('Attori:', Page, LineNr);
- if LineNr <> -1 then
- begin
- Line := Page.GetString(LineNr+1);
- HTMLRemoveTags(Line);
- SetField(fieldActors, Line);
- end
-
- // Prodotto
- LineNr := FindLine('Prodotto da:', Page, LineNr);
- if LineNr <> -1 then
- begin
- Line := Page.GetString(LineNr+1);
- HTMLRemoveTags(Line);
- SetField(fieldProducer, Line);
- end
-
- // Critica
- LineNr := FindLine('Critica', Page, LineNr);
- if LineNr <> -1 then
- begin
- Line := Page.GetString(LineNr+11);
- HTMLRemoveTags(Line);
- SetField(fieldComments, Line);
- end
-
- if pos('<b>Titolo Originale: </b>', Line) = 1 then
- begin
- HTMLRemoveTags(Line);
- Delete(Line, 1, 18);
- SetField(fieldOriginalTitle, Line);
- end
- else if pos('alt="Immagine"', Line) <> 0 then
- begin
- Delete(Line, 1, pos('<img ', Line) + 10);
- Delete(Line, pos('" width=', Line), pos('>', Line) + 1);
- GetPicture(Line, False);
- end
-
- DisplayResults;
- end;
-
- end;
-
- // ---
-
- procedure AddMoviesTitles(Page: TStringList);
- var
- LineNr: Integer;
- NewLineNr: Integer;
- Line: string;
- MovieTitle, MovieAddress: string;
- BeginPos, EndPos: Integer;
-
- begin
- TheMovieAddress := '*';
- LineNr := 0;
- LineNr := FindLine('<font face=arial,helvetica><b>Risulati Film</b>',Page,LineNr);
- LineNr := LineNr + 3;
-
- PickTreeAdd('Risultati ricerca per "' + MovieName + '":', '');
-
- while LineNr > 2 do
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos('<li><b><a href="',Line)+16;
- EndPos := pos('">',Line);
- MovieAddress := copy(Line,BeginPos,EndPos-BeginPos);
- Delete(Line,1,EndPos + 1);
- BeginPos := 1;
- EndPos := -1;
- MovieTitle := Line;
- HTMLRemoveTags(MovieTitle);
- HTMLDecode(Movietitle);
- PickTreeAdd(MovieTitle, MovieAddress);
-
- NewLineNr := FindLine('<li><b><a href="',Page,LineNr+1);
- if NewLineNr <> (LineNr + 1) then
- LineNr := 2
- else
- LineNr := NewLineNr;
-
- if TheMovieAddress='*' then
- TheMovieAddress := MovieAddress
- else
- TheMovieAddress := '';
- end;
- if TheMovieAddress='*' then TheMovieAddress := '';
- end;
-
- // main
-
- begin
- if CheckVersion(3,4,1) then
- begin
- MovieName := GetField(fieldOriginalTitle);
- if MovieName = '' then
- MovieName := GetField(fieldTranslatedTitle);
- if Input('Yahoo!Cinema Import', 'Inserire il titolo del film:', MovieName) then
- begin
- AnalyzePage('http://it.search.movies.yahoo.com/search/movies_db_it?mt='+UrlEncode(MovieName));
- end;
- end
- else
- ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.1)');
- end.
-